package com.practice.ajCollections010.list.arraylist;

import java.util.ArrayList;
import java.util.List;

/**
 * ArrayList 初始化
 * ArrayList 是基于一个一维对象数组的可扩容的集合数据类型
 * 扩容机制：初始化容量为 0 的时候，在第一次添加元素的时候，默认扩容为 10，如果再次扩容，则为上次容量的 1.5 倍
 * 继承关系：ArrayList-Inherit-UML.jpg
 * 边界问题：最小容量为 0，最大容量根据 JVM 平台的不同，大多接近 Integer.MAX_VALUE
 */
public class Init {

    /**
     * 创建 ArrayList 实例，无参构造函数会初始化一个空的对象数组，就是说其 capacity 为 0
     * @return java.util.ArrayList
     */
    static ArrayList initArrayList() {
        return new ArrayList();
    }

    /**
     * 创建一个容量为 capacity的 ArrayList 实例，也就是说创建一个容量为 capcity 的一维对象数组
     * @param capacity
     * @return java.util.ArrayList
     */
    static ArrayList initArrayList(int capacity) {
        return new ArrayList(capacity);
    }

    /**
     * 创建 ArrayList<String> 实例
     * @return
     */
    static ArrayList<String> initArrayList2() {
        return new ArrayList<String>();
    }

    static ArrayList<String> initArrayList2(int capacity) {
        return new ArrayList<String>(capacity);
    }

    public static void main(String[] args) {
        System.out.println(Integer.MAX_VALUE);
        List list = new ArrayList(Integer.MAX_VALUE - 3);
    }


}
